#ifndef __threadPool_H__
#define __threadPool_H__
#include <54func.h>
#include "worker.h"
#include "taskQueue.h"
#define NETDISK_LOG_INFO(priority, format, ...) do { \
    openlog("wangpan", LOG_PID, LOG_USER); \
    syslog(priority, "[%s:%s:%d] " format, __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
    closelog(); \
} while (0)

#define NETDISK_LOG_ERR(priority, format, ...) do { \
    openlog("wangpan", LOG_PID, LOG_USER); \
    char error_message[100]; \
    snprintf(error_message, sizeof(error_message), "[%s:%s:%d] " format, __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
    syslog(LOG_ERR, "%s: %s", error_message, strerror(errno)); \
    closelog(); \
    fprintf(stderr, "%s: %s\n", error_message, strerror(errno)); \
} while (0)

typedef struct threadPool_s{
    // 记录所有的子线程信息
    tidArr_t tidArr;
    // 任务队列
    taskQueue_t taskQueue;
    // 锁
    pthread_mutex_t mutex;
    // 任务变量
    pthread_cond_t cond;
}threadPool_t;

// 对线程池进行初始化
int threadPoolInit(threadPool_t * pthreadPool,int workerNum);
// 创建子线程
int makeWorker(threadPool_t * pthreadPool);
// 主线程（服务器）进行TCP连接，初始化
int tcpInit(const char *ip,const char *port,int *pockfd);
// 加入监听集合
int epollAdd(int epfd,int fd);
// 删除监听集合
int epollDel(int epfd,int fd);
// 文件传输
int transFile(int netfd);
typedef struct train_s {
    int length;
    char data[1000];
} train_t;
// 服务器处理客户端命令
int handle_command(char *p_command,char *qpathName);

#endif
